import vueParser from 'vue-eslint-parser'
import babelParser from '@babel/eslint-parser'
import stylistic from '@stylistic/eslint-plugin'
import vuePlugin from 'eslint-plugin-vue'
import prettierPlugin from 'eslint-plugin-prettier'
import prettierConfig from 'eslint-config-prettier'

// 基础配置
const baseConfig = {
  files: ['**/*.js', '**/*.vue'],
  languageOptions: {
    ecmaVersion: 2022,
    sourceType: 'module',
    parser: vueParser,
    parserOptions: {
      // 为 Vue 解析器指定子解析器配置
      parser: {
        js: {
          // 直接使用 Babel 解析器实例并配置
          ...babelParser,
          parserOptions: {
            ecmaVersion: 2022, // 显式设置 ecmaVersion
            requireConfigFile: false
          }
        }
      }
    }
  },
  plugins: {
    '@stylistic': stylistic,
    vue: vuePlugin,
    prettier: prettierPlugin
  },
  rules: {
    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'vue/multi-word-component-names': 'off',
    // 移除所有与格式相关的规则，完全交给Prettier处理
    'prettier/prettier': [
      'error',
      {
        // 确保这里的配置与.prettierrc中保持一致
        printWidth: 100,
        tabWidth: 2,
        useTabs: false,
        semi: false,
        singleQuote: true,
        trailingComma: 'none',
        bracketSpacing: true,
        arrowParens: 'avoid',
        vueIndentScriptAndStyle: false
      }
    ]
  }
}

// 忽略文件配置
const ignoreConfig = {
  ignores: ['dist/**', 'node_modules/**']
}

// 使用eslint-config-prettier来关闭所有与格式相关的可能与prettier冲突的规则
export default [baseConfig, prettierConfig, ignoreConfig]
